特征检测之SUSAN算法
SUSAN算法概述
1997 年英国牛津大学的 S.M.smith 和 J.M.Brady 人提出了一种用于低层次图像处理的最小核值相似区(即 Smallest Univalue Segment Assimilating Nucleus,简称SUSAN)算法。它直接对图像灰度值进行操作,方法简单,无需梯度运算,保证了算法的效率;定位准确,对多个区域的结点也能精确检测;并且具有积分特性,对局部噪声不敏感,抗噪能力强。
SUSAN 准则的原理如图1所示,用一个圆形模板遍历图像,若模板内其他任意像素的灰度值与模板中心像素(核)的灰度值的差小于一定阈值,就认为该点与核具有相同(或相近)的灰度值,满足这样条件的像素组成的区域称为核值相似区(Univalue Segment Assimilating Nucleus, USAN)。
图1显示了一个在白色背景下的黑色的长方形,图中a,b,c,d,e五个位置分别是五个圆形的模板在图像中不同的位置,窗口的中心被称之为“核”。由图1可以看出,当圆形模板完全处在图像或背景中时,USAN区域面积最大(如图1中的a和b);当模板移向图像边缘时,USAN区域逐渐变小(如图1中c);当模板中心处于边缘时,USAN区域很小(如图1中的d);当模板中心处于角点时,USAN区域最小(如图1中的e)。可以看出,在边缘处像素的USAN值都小于或等于其最大值的一半。因此,利用USAN面积的上述变化性质可检测边缘或角点。
图1 SUSAN模板在图像中的几种位置
SUSAN算法流程
对整幅图像中的所有像素,用圆形模板进行扫描,比较模板内每一像素与中心像素的灰度值,通过与给定的阀值比较,来判别该像素是否属于USAN区域,如公式1所示:
公式(1)中c(r,r0)为模板内属于USAN区域的像素的判别函数;I(r0)是模板中心像素(核)的灰度值;I(r)为模板内其他任意像素的灰度值;t是灰度差阈值。图像中每一点的USAN区域大小可用公式2表示:
公式(2)中D(r0)为以r0为中心的圆形模板区域。得到每个像素的USAN值n(r0)以后,再与预先设定得门限g进行比较,当n(r0)<g时,所检测到像素位置r0可以认为是一个边缘点或角点。
SUSAN算法模板的选取
由于图像的数字化,实际上无法实现真正的圆形模板,所以都是采用近似圆代替。但是模板较小时,如果阈值选取不恰当,可能会发生边缘点或角点漏检的情况。模板也不宜取得太大,否则会增大运算量大,通常可取5×5或37像素模板。
SUSAN算法阈值t,g的确定
阈值g决定了边缘点的USAN区域的最大值,即只要图像中的像素的USAN值小于g,该点就被判定为边缘点。g过大时,边缘点附近的像素可能作为边缘被提取出来,过小则会漏检部分边缘点。实验证明g取3/4 * Nmax(Nmax为模板的最大USAN值)可以较好地提取出初始边缘点。如果要达到单像素的精度,还需进一步剔除多余像素。
阈值t表示所能检测边缘点的最小对比度,也是能忽略的噪声的最大容限。t越小,可从对比度越低的图像中提取特征。因此对于不同对比度和噪声情况的图像,应取不同的t值。
SUSAN算法实例
图2 SUSAN角点检测
图3 SUSAN边缘检测